//package thread;
//
//import java.io.*;
//import java.net.ServerSocket;
//import java.net.Socket;
//import java.nio.charset.StandardCharsets;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @Author: Miyako
// * @Date: 2024-07-22-8:19
// * @Description: 多人聊天服务器
// */
//
//public class ThreadChartServer {
//    private List<PrintWriter> pws = new ArrayList<>();
//    private class ClientHander implements Runnable{
//        private Socket socket;
//        private String host;
//        ClientHander(Socket socket){
//            this.socket = socket;
//            host = socket.getInetAddress().getHostAddress();
//        }
//        public void run(){
//            PrintWriter pw = null;
//            try{
//                BufferedReader br = new BufferedReader(
//                        new InputStreamReader(
//                                socket.getInputStream(), StandardCharsets.UTF_8));
//                pw = new PrintWriter(
//                        new BufferedWriter(
//                                new OutputStreamWriter(
//                                        socket.getOutputStream(),StandardCharsets.UTF_8)),true);
//                String data;
//                synchronized (ThreadChartServer.this) {
//                    pws.add(pw);//将所有客户端的socket对象的输出流加入集合存起来
//                }
//                while((data = br.readLine())!=null){
//                    System.out.println(host+":"+data);
//                    synchronized (ThreadChartServer.this) {
//                        for (PrintWriter PW : pws) {//遍历集合广播给所有客户端
//                            PW.println(data);
//                        }
//                    }
//                }
//            }catch (Exception e){
//                e.printStackTrace();
//            }finally {
//                synchronized (ThreadChartServer.this){
//                    pws.remove(pw);
//                    try {
//                        if (socket != null) {
//                            socket.close();
//                        }
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//
//        }
//    }
//    private ServerSocket serverSocket;
//    private static final int port;
//    static {
//        port=8788;
//    }
//    ThreadChartServer(){
//        try{
//            System.out.println("Server Starting ...");
//            serverSocket = new ServerSocket(port);
//            System.out.println("Server Start ok!");
//        }catch (IOException e){
//            e.printStackTrace();
//            System.out.println("Server Start deft");
//            System.exit(-1);
//        }
//
//    }
//     public  void start(){
//        while(true){
//            try{
//                System.out.println("Client Linking...");
//                Socket socket = serverSocket.accept();
//                System.out.println("Client Link ok!");
//                new Thread(new ClientHander(socket)).start();
//            }catch (IOException e){
//                e.printStackTrace();
//                System.out.println("Client Link defeat");
//            }
//         }
//     }
//
//
//
//    public static void main(String[] args) {
//        new ThreadChartServer().start();
//        Thread.currentThread().getName();
//    }
//}
//
